
package pe.edu.upc.sigu.web;

import java.io.Serializable;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import java.util.List;
import javax.enterprise.context.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import pe.edu.upc.sigu.entities.Alumnos;
import pe.edu.upc.sigu.entities.Carreras;
import pe.edu.upc.sigu.entities.Cursos;
import pe.edu.upc.sigu.entities.Periodos;
import pe.edu.upc.sigu.entities.Personal;
import pe.edu.upc.sigu.entities.Seccion;
import pe.edu.upc.sigu.negocio.service.CarreraService;
import pe.edu.upc.sigu.negocio.service.NotasServive;
import pe.edu.upc.sigu.negocio.service.PeriodoService;
import pe.edu.upc.sigu.util.Constant;

@ManagedBean(name="registroNotasBean")
@SessionScoped
public class RegistroNotasBean implements Serializable{

    @ManagedProperty(value = "#{periodoService}")
    private PeriodoService periodoService;

    @ManagedProperty(value = "#{carreraService}")
    private CarreraService carreraService ;

    @ManagedProperty(value = "#{notasServive}")
    private NotasServive notasServive;    
    
    private String periodo;
    private String carrera;
    private String seccion;
    private String cursos;
    
    private List<SelectItem> listaPeriodos = new ArrayList<SelectItem>();
    private List<SelectItem> listaCarrera = new ArrayList<SelectItem>();
    private List<SelectItem> listaSeccion = new ArrayList<SelectItem>();
    private List<SelectItem> listaCiclo = new ArrayList<SelectItem>();
    private List<SelectItem> listaCursos = new ArrayList<SelectItem>();
    
    
    
     public void obtenerCarrera(AjaxBehaviorEvent event){
         //String periodo = (String) event.getNewValue();
         this.periodo = periodo;
        List<Carreras>  listCarrerasDocentes = getNotasServive().getCarreras(new Periodos(1,this.periodo), new Personal( Constant.INSTITUCION ,"0000000056") );
  	listaCarrera.add(new SelectItem("0", "------ SELECCIONE ------"));
        for (Carreras carrera : listCarrerasDocentes) {
		listaCarrera.add(new SelectItem(carrera.getCarrera(), carrera.getDescripcion()));
	}              
     } 
     
     public void obtenerSeccion(ValueChangeEvent event){
         String carrera = (String) event.getNewValue();
         this.carrera = carrera;
         List<Seccion> listaSecciones = notasServive.getSecciones(new Periodos(1,this.periodo), new Personal( Constant.INSTITUCION ,"0000000056"), new Carreras(this.carrera));
  	 listaSeccion.add(new SelectItem("0", "------ SELECCIONE ------"));
         for (Seccion seccion : listaSecciones) {
		listaSeccion.add(new SelectItem(seccion.getSeccionPK().getSeccion(), seccion.getDescripcion()));
	}
     }
     
     public void obtenerCursos(ValueChangeEvent event){
         String seccion = (String) event.getNewValue();
         this.seccion = seccion;
         List<Cursos> listaCursosDocentes = notasServive.getCursos(new Periodos(1,this.periodo), new Personal( Constant.INSTITUCION ,"0000000056"), new Carreras(this.carrera), new Seccion(Constant.INSTITUCION,this.seccion));
  	 listaCursos.add(new SelectItem("0", "------ SELECCIONE ------"));
         for (Cursos cursos : listaCursosDocentes) {
		listaCursos.add(new SelectItem(cursos.getCurso(), cursos.getDescripcion()));
	}         
         
     }
     
    
    /**
     * @return the listaCarrera
     */
    public List<SelectItem> getListaCarrera() {
        return listaCarrera;
    }

    /**
     * @param listaCarrera the listaCarrera to set
     */
    public void setListaCarrera(List<SelectItem> listaCarrera) {
        this.listaCarrera = listaCarrera;
    }
    
    /**
     * @return the listaPeriodos
     */
    public List<SelectItem> getListaPeriodos() {
        List<Periodos> periodosList  = getNotasServive().getPeriodosList( new Alumnos(1,"2007100180"));
  	for (Periodos periodo : periodosList) {
		listaPeriodos.add(new SelectItem(periodo.getPeriodosPK().getPeriodo(), periodo.getDescripcion()));
	} 
        return listaPeriodos;
    }    
    
    /**
     * @param listaPeriodos the listaPeriodos to set
     */
    public void setListaPeriodos(List<SelectItem> listaPeriodos) {
        this.listaPeriodos = listaPeriodos;
    }

    /**
     * @return the listaSeccion
     */
    public List<SelectItem> getListaSeccion() {
        return listaSeccion;
    }

    /**
     * @param listaSeccion the listaSeccion to set
     */
    public void setListaSeccion(List<SelectItem> listaSeccion) {
        this.listaSeccion = listaSeccion;
    }

    /**
     * @return the listaCiclo
     */
    public List<SelectItem> getListaCiclo() {
        return listaCiclo;
    }

    /**
     * @param listaCiclo the listaCiclo to set
     */
    public void setListaCiclo(List<SelectItem> listaCiclo) {
        this.listaCiclo = listaCiclo;
    }

    /**
     * @return the listaCursos
     */
    public List<SelectItem> getListaCursos() {
        return listaCursos;
    }

    /**
     * @param listaCursos the listaCursos to set
     */
    public void setListaCursos(List<SelectItem> listaCursos) {
        this.listaCursos = listaCursos;
    }
    
    
    /**
     * @return the periodo
     */
    public String getPeriodo() {
        return periodo;
    }

    /**
     * @param periodo the periodo to set
     */
    public void setPeriodo(String periodo) {
        this.periodo = periodo;
    }

    /**
     * @return the carrera
     */
    public String getCarrera() {
        return carrera;
    }

    /**
     * @param carrera the carrera to set
     */
    public void setCarrera(String carrera) {
        this.carrera = carrera;
    }

    /**
     * @return the periodoService
     */
    public PeriodoService getPeriodoService() {
        return periodoService;
    }

    /**
     * @param periodoService the periodoService to set
     */
    public void setPeriodoService(PeriodoService periodoService) {
        this.periodoService = periodoService;
    }

    /**
     * @return the carreraService
     */
    public CarreraService getCarreraService() {
        return carreraService;
    }

    /**
     * @param carreraService the carreraService to set
     */
    public void setCarreraService(CarreraService carreraService) {
        this.carreraService = carreraService;
    }

    /**
     * @return the notasServive
     */
    public NotasServive getNotasServive() {
        return notasServive;
    }

    /**
     * @param notasServive the notasServive to set
     */
    public void setNotasServive(NotasServive notasServive) {
        this.notasServive = notasServive;
    }

    /**
     * @return the seccion
     */
    public String getSeccion() {
        return seccion;
    }

    /**
     * @param seccion the seccion to set
     */
    public void setSeccion(String seccion) {
        this.seccion = seccion;
    }

    /**
     * @return the cursos
     */
    public String getCursos() {
        return cursos;
    }

    /**
     * @param cursos the cursos to set
     */
    public void setCursos(String cursos) {
        this.cursos = cursos;
    }
    
    
    
    
}
